//package com.wcbtest.webs;
//
//import com.jcraft.jsch.Channel;
//import com.jcraft.jsch.ChannelExec;
//import com.jcraft.jsch.JSch;
//import org.apache.commons.exec.CommandLine;
//import org.apache.commons.exec.DefaultExecutor;
//import org.apache.commons.exec.PumpStreamHandler;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Component;
//
//import javax.websocket.*;
//import javax.websocket.server.ServerEndpoint;
//import java.io.ByteArrayOutputStream;
//import java.io.IOException;
//import java.util.Collections;
//import java.util.HashMap;
//import java.util.HashSet;
//import java.util.Set;
//
//@ServerEndpoint("/terminal")
//@Component
//public class TerminalEndpointOld {
//    private static final Set<Session> sessions = Collections.synchronizedSet(new HashSet<>());
//    private static final HashMap<String, HashMap<String, Object>> clientData = new HashMap<>();
//
//    /***
//     * 连接建立时执行的操作
//     * @param session
//     */
//    @OnOpen
//    public void onOpen(Session session) {
//        sessions.add(session);
//        System.out.println("获取访客:" + session.getId());
//        sendClient(session, "成功连接建立连接：" + session.getId());
//    }
//
//
//    /***
//     * 收到客户端消息执行的操作
//     */
//    @OnMessage
//    public void onMessage(String command, Session session) {
//        System.out.println("获取访客:" + session.getId());
//        System.out.println("收到客户端消息:" + command);
//
//
//        CommandLine cmdLine = CommandLine.parse("/bin/bash");
//        cmdLine.addArgument("-c");
//        cmdLine.addArgument(command); // 注意使用 && 连接命令
//
//        //CommandLine cmdLine = CommandLine.parse("cmd");
//        //cmdLine.addArgument("/c");
//        //cmdLine.addArgument("cd C:\\path\\to\\target && dir");
//        //demo();
//
//        // 处理客户端信息
//        try {
//            //DefaultExecutor exec = new DefaultExecutor();
//            //if (clientData.containsKey(session.getId())) {
//            //    HashMap<String, Object> map = clientData.get(session.getId());
//            //    exec = (DefaultExecutor) map.get("exec");
//            //    System.out.println("wcb打印2025/6/18 12:19【TerminalEndpoint.onMessage:52】exec => " + exec.getWorkingDirectory());
//            //} else {
//            //    //DefaultExecutor exec = new DefaultExecutor();
//            //    //exec.setWorkingDirectory(new File("E:\\Desktop\\docker_java"));
//            //    //exec.setWorkingDirectory(new File("/wcb_software"));
//            //    // 设置超时为15秒
//            //    ExecuteWatchdog watchdog = new ExecuteWatchdog(15000);
//            //    exec.setWatchdog(watchdog);
//            //    exec.setExitValues(null);
//            //    HashMap<String, Object> map = new HashMap<>();
//            //    map.put("exec", exec);
//            //    clientData.put(session.getId(), map);
//            //}
//            //
//            //ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//            //ByteArrayOutputStream errorStream = new ByteArrayOutputStream();
//            //PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream, errorStream);
//            //exec.setStreamHandler(streamHandler);
//            //CommandLine commandLine = CommandLine.parse(command);
//            //exec.execute(cmdLine);
//            //String out = outputStream.toString("gbk");
//            //String error = errorStream.toString("gbk");
//            //String str = out + error;
//            //System.out.println("wcb打印2025/6/18 14:19【TerminalEndpoint.onMessage:67】str => " + str);
//            //sendClient(session, str);
//
//            //String host = "192.168.110.130";
//            //String user = "root";
//            //String password = "123456";
//            //int port = 22; // SSH默认端口是22
//            //
//            //try {
//            //    JSch jsch = new JSch();
//            //
//            //    com.jcraft.jsch.Session session333 = jsch.getSession(user, host, port);
//            //    session333.setPassword(password);
//            //    session333.setConfig("StrictHostKeyChecking", "no"); // 可选，避免首次连接时需要手动确认密钥
//            //    session333.connect();
//            //
//            //    System.out.println("Connected to " + host + ".");
//            //
//            //    // 执行命令
//            //    //String command = "ls -l"; // 示例命令，你可以修改为任何你想执行的命令
//            //    Channel channel = session333.openChannel("exec");
//            //    ((ChannelExec) channel).setCommand(command);
//            //    channel.setInputStream(null);
//            //    ((ChannelExec) channel).setErrStream(System.err);
//            //    channel.connect();
//            //
//            //    // 读取命令的输出结果
//            //    java.io.InputStream in = channel.getInputStream();
//            //    byte[] tmp = new byte[1024];
//            //    while (true) {
//            //        while (in.available() > 0) {
//            //            int i = in.read(tmp, 0, 1024);
//            //            if (i < 0) {break;};
//            //            System.out.print(new String(tmp, 0, i));
//            //        }
//            //        if (channel.isClosed()) {
//            //            System.out.println("Exit-status: " + channel.getExitStatus());
//            //            break;
//            //        }
//            //        try { Thread.sleep(1000); } catch (Exception ee) { }
//            //    }
//            //    channel.disconnect();
//            //    session333.disconnect();
//            //} catch (Exception e) {
//            //    e.printStackTrace();
//            //}
//            demo(command);
//        } catch (Exception e) {
//            sendClient(session, e.getMessage());
//        }
//    }
//
//    public static void main(String[] args) {
//     //new TerminalEndpoint().   demo();
//    }
//    public void demo(String command) {
//        String host = "192.168.110.130";
//        String user = "root";
//        String password = "123456";
//        int port = 22; // SSH默认端口是22
//
//        try {
//            JSch jsch = new JSch();
//            com.jcraft.jsch.Session session = jsch.getSession(user, host, port);
//            session.setPassword(password);
//            session.setConfig("StrictHostKeyChecking", "no"); // 可选，避免首次连接时需要手动确认密钥
//            session.connect();
//            System.out.println("连接服务器 => " + host);
//
//            // 执行命令
//            //String command = "ping 127.0.0.1"; // 示例命令，你可以修改为任何你想执行的命令
//            //String command = "ls -l"; // 示例命令，你可以修改为任何你想执行的命令
//            Channel channel = session.openChannel("exec");
//            ((ChannelExec) channel).setCommand(command);
//            channel.setInputStream(null);
//            ((ChannelExec) channel).setErrStream(System.err);
//            channel.connect();
//
//            // 读取命令的输出结果
//            java.io.InputStream in = channel.getInputStream();
//            byte[] tmp = new byte[1024];
//            while (true) {
//                while (in.available() > 0) {
//                    int i = in.read(tmp, 0, 1024);
//                    if (i < 0) {break;};
//                    System.out.print(new String(tmp, 0, i));
//                }
//                if (channel.isClosed()) {
//                    System.out.println("Exit-status: " + channel.getExitStatus());
//                    break;
//                }
//                try { Thread.sleep(500); } catch (Exception ee) { }
//            }
//            channel.disconnect();
//            session.disconnect();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//
//    /***
//     * 向客户端发送信息
//     */
//    //@Scheduled(fixedRate = 2000)
//    @Scheduled(cron = "0/5 * * * * ?")
//    public void sendMsg() throws IOException {
//        System.out.println("向客户端发送信息");
//    }
//
//
//    @OnError
//    public void onError(Session session, Throwable error) {
//        sendClient(session, "服务器出现异常：" + error.getMessage());
//        System.out.println("获取访客:" + session.getId());
//        error.printStackTrace();
//    }
//
//    /***
//     * 连接关闭时执行的操作
//     * @param session
//     */
//    @OnClose
//    public void onClose(Session session) {
//        System.out.println("获取访客:" + session.getId());
//        sessions.remove(session);
//        System.out.println("终端连接关闭:" + session.getId());
//    }
//
//    private void sendClient(Session session, String str) {
//        try {
//            session.getBasicRemote().sendText(str);
//        } catch (Exception e) {
//            throw new RuntimeException("发送信息到客户端失败");
//        }
//    }
//
//
//    public String ping(String command) {
//
//        try {
//
//
//            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//
//            ByteArrayOutputStream errorStream = new ByteArrayOutputStream();
//
//
//            DefaultExecutor exec = new DefaultExecutor();
//            //exec.setWorkingDirectory(new File("E:\\Desktop\\docker_java"));
//            //exec.setWorkingDirectory(new File("/wcb_software"));
//
//            exec.setExitValues(null);
//
//            PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream, errorStream);
//
//            exec.setStreamHandler(streamHandler);
//
//            exec.execute(CommandLine.parse(command));
//            //exec.execute(CommandLine.parse("cd /wcb_software/docker/docker-compose/jar/wcbtest/"));
//
//            String out = outputStream.toString("gbk");
//
//            String error = errorStream.toString("gbk");
//
//
//            return out + error;
//
//        } catch (Exception e) {
//
//
//            return e.toString();
//
//        }
//
//    }
//}
